/**
 * @author LARAKI Meryem, MATHIEU Renaud
 * <h1>ESIAL 2A - PIDR 2010 </h1>
 * <h2>Modelisation de connaissances et competences informatiques</h2>
 */

package graphique;

import javax.swing.BorderFactory;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import modele.Parser;
import modele.Recherche;

import org.semanticweb.owlapi.model.OWLClass;

import uk.ac.manchester.cs.owl.owlapi.OWLNamedIndividualImpl;

public class VueAfficherOffres extends JPanel {
	
	private static final long serialVersionUID = 1L;
	// --------------------
	// Attributs
	// --------------------
	public Parser parser;
	public JList liste;

	private VueRecherche vueRecherche;
	// --------------------
	// Constructeur
	// --------------------
	public VueAfficherOffres(Parser parser) {
		this.parser = parser;

		OWLClass offre = parser.instanceClasse("http://www.owl-ontologies.com/Ontology1269438469.owl#OffreEmploi");

		// Creation des elements graphiques
		liste = new JList();
		liste.setModel(new ListIndividusAdapter(parser.getArrayIndividus(offre)));
		liste.setCellRenderer(new ListIndividusFormater());

		// Actions
		liste.addListSelectionListener(new ActionSelection(parser));
		
		// Ajout des elements graphiques
		this.add(new JScrollPane(liste));

		// Options du JPanel
		TitledBorder afact = BorderFactory.createTitledBorder("Offre d'emploi");
		afact.setTitleJustification(TitledBorder.CENTER);
		setBorder(afact);
	}// cons-1
	
	// --------------------
	// Methodes
	// --------------------
	public VueRecherche getVueRecherche() {
		return vueRecherche;
	}
	public void setVueRecherche(VueRecherche vueRecherche) {
		this.vueRecherche = vueRecherche;
	}
	
	public class ActionSelection implements ListSelectionListener {
	
		private Parser parser;
		
		public ActionSelection(Parser parser){
			this.parser = parser;
		}
		
		@Override
		public void valueChanged(ListSelectionEvent e) {
			OWLNamedIndividualImpl offreSelectionnee = (OWLNamedIndividualImpl)((JList)e.getSource()).getSelectedValue();
			String oldName = offreSelectionnee.toString();
			String newName = oldName.split(".*#")[1];
			vueRecherche.setLabelOffreChoisie(newName.substring(0, newName.length() - 1));
			vueRecherche.setRecherche(new Recherche(this.parser,vueRecherche.getLabelOffreChoisie().getText()));
		}
	}
	
	
}
